#pragma	once

#include "ZGameMessage.h"
#include "GameMessageId.h"

//------------------------------------------------------------------------------------------------------------------------
class	ChatGameMessage
	:	public Z::GameMessage
{
public:
	ChatGameMessage(Z::NetworkId kNetworkId);
	ChatGameMessage(const std::string& kChat);
	virtual	void	serialize(Z::Streamable& streamable)	const;
	virtual	void	deserialize(Z::Streamable& streamable);
	static	const	Z::GameMessageId	id	= chat;
	const	std::string&	getChat()	const	{	return mChat;	}

private:
	std::string	mChat;
public:
	static	const	size_t	chatSize	= 128;
};

//------------------------------------------------------------------------------------------------------------------------
class	ShoutGameMessage
	:	public Z::GameMessage
{
public:
	ShoutGameMessage(Z::NetworkId kNetworkId);
	ShoutGameMessage(const std::string& kShout);
	virtual	void	serialize(Z::Streamable& streamable)	const;
	virtual	void	deserialize(Z::Streamable& streamable);
	static	const	Z::GameMessageId	id	= shout;

private:
	std::string	mShout;
	static	const	size_t	shoutSize	= 128;
};